﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ChurchDiary.TableEntity;
using System.Data;

namespace ChurchDiary.DAL.Contract
{
    public interface IDALChurch
    {
        List<EntityChurch> GetChurch(int PageNo, string SearchKey, string Sort, string SortMode, int PerPage, Guid PartitionId, Guid DesignationId);
        List<EntityChurch> PrintChurch(string SearchKey, string Sort, string SortMode, Guid PartitionId, Guid DesignationId);
        List<EntityChurch> GetChurch();
        EntityChurch GetChurch(Guid ChurchId);
        EntityChurchSammary GetChurchSummary();
        string InsertChurchDetails(EntityChurch Church);
        string UpdateChurchDetails(EntityChurch Church);
        List<EntityChurch> GetChurches();
        List<EntityChurchReport> GetChurchReport();
        string DeleteChurch(Guid ChurchId);
        List<EntityChurchDesignation> GetChurchDesignation();
        List<EntityChurch> GetChurches(Guid Partitionid);
        #region Designation
        string InsertDesignation(EntityChurchDesignation Designation);
        string UpdateDesignation(EntityChurchDesignation Designation);
        string DeleteDesignation(Guid DesignationId);
        List<EntityChurchDesignation> GetDesignations();
        List<EntityChurchDesignation> GetDesignations(int OrganizationId);
        EntityChurchDesignation GetDesignation(Guid DesignationId);
        #endregion
        #region ChurchAsserts
        string InsertChurchAsserts(EntityChurchAsserts ChurchAsserts);
        string UpdateChurchAsserts(EntityChurchAsserts ChurchAsserts);
        string DeleteChurchAsserts(Guid AssertId);
        List<EntityChurchAsserts> GetChurchAsserts();
        EntityChurchAsserts GetChurchAsserts(Guid AssertId);
        #endregion
        #region ChurchBoard
        string InsertChurchBoard(EntityChurchBoard ChurchBoard);
        string UpdateChurchBoard(EntityChurchBoard ChurchBoard);
        string DeleteChurchBoard(Guid BoardId);
        List<EntityChurchBoard> GetChurchBoard();
        EntityChurchBoard GetChurchBoard(Guid BoardId);
        #endregion
        #region ChurchBoardJobtitle
        string InsertChurchBoardJobtitle(EntityChurchBoardJobtitle ChurchBoardJobtitle);
        string UpdateChurchBoardJobtitle(EntityChurchBoardJobtitle ChurchBoardJobtitle);
        string DeleteChurchBoardJobtitle(Guid BoardJobtitleId);
        List<EntityChurchBoardJobtitle> GetChurchBoardJobtitle();
        EntityChurchBoardJobtitle GetChurchBoardJobtitle(Guid BoardJobtitleId);
        List<EntityChurchBoardJobtitle> GetChurchBoardJobtitlebyBoardId(Guid BoardId);
        List<EntityChurchBoardJobtitle> GetChurchBoardJobtitlebyRole(Guid BoardId);
        List<EntityChurchBoardJobtitle> GetChurchBoardAssignedJobtitle(Guid BoardId);
        #endregion
        #region IncomeType
        string InsertIncomeType(EntityIncomeType IncomeType);
        string UpdateIncomeType(EntityIncomeType IncomeType);
        string DeleteIncomeType(Guid IncomeTypeId);
        List<EntityIncomeType> GetIncomeType();
        EntityIncomeType GetIncomeType(Guid IncomeTypeId);
        #endregion
        #region JobtitleRole
        string InsertJobtitleRole(EntityChurchJobtitleRole JobtitleRole);
        string UpdateJobtitleRole(EntityChurchJobtitleRole JobtitleRole);
        string DeleteJobtitleRole(Guid JobtitleRoleId);
        List<EntityChurchJobtitleRole> GetJobtitleRole();
        EntityChurchJobtitleRole GetJobtitleRole(Guid JobtitleRoleId);
        #endregion
        #region PrayerGroup
        string InsertPrayerGroup(EntityPrayerGroup PrayerGroup);
        string UpdatePrayerGroup(EntityPrayerGroup PrayerGroup);
        string DeletePrayerGroup(Guid PrayerGroupId);
        List<EntityPrayerGroup> GetPrayerGroup();
        EntityPrayerGroup GetPrayerGroup(Guid PrayerGroupId);
        #endregion
    }
}
